package com.probiz.estore.order.service;

import com.probiz.estore.common.model.order.OrderPayment;
import com.probiz.estore.common.model.order.OrderPick;
import com.probiz.estore.common.model.order.OrderShipment;
import com.probiz.estore.common.model.order.SalesOrder;
import com.probiz.estore.order.model.OrderCancelModel;
import com.probiz.estore.order.model.OrderCompleteModel;

/**
 * 订单日志审计工具类接口
 * 对订单主要数据的变化和流程操作进行记录
 */
public interface OrderAuditHelper {
	
	/**
	 * 记录前台创建订单日志
	 * @param salesOrder
	 */
	public void doLogCreateOrderByCustomer(SalesOrder salesOrder);
	/**
	 * 记录后台创建订单日志
	 * @param salesOrder
	 */
	public void doLogCreateOrderByAdmin(SalesOrder salesOrder);
	
	/**
	 * 记录确认订单日志
	 * @param salesOrder
	 */
	public void doLogConfirmOrder(SalesOrder salesOrder);
	/**
	 * 记录订单付款日志
	 * @param salesOrder
	 * @param orderPayment
	 */
	public void doLogPayOrder(SalesOrder salesOrder,OrderPayment orderPayment);
	/**
	 * 记录订单退款日志
	 * @param salesOrder
	 * @param orderPayment
	 */
	public void doLogRefundOrder(SalesOrder salesOrder,OrderPayment orderPayment);
	
	/**
	 * 记录订单发货日志
	 * @param salesOrder
	 * @param orderPayment
	 */
	public void doLogShipOrder(SalesOrder salesOrder,OrderShipment orderShipment);
	/**
	 * 记录订单退货日志
	 * @param salesOrder
	 * @param orderPayment
	 */
	public void doLogReturnOrder(SalesOrder salesOrder,OrderShipment orderShipment);
	
	/**
	 * 记录订单编辑日志
	 * @param salesOrder
	 * @param orderPayment
	 */
	public void doLogEditOrder(SalesOrder salesOrder);
	/**
	 * 记录订单备货日志
	 * @param salesOrder
	 * @param orderPayment
	 * @param orderPick
	 */
	public void doLogPickOrder(SalesOrder salesOrder,OrderPick orderPick);
	/**
	 * 记录客户取消订单日志
	 * @param salesOrder
	 * @param orderPayment
	 * @param cancelModel
	 */
	public void doLogCancelOrderByCustomer(SalesOrder salesOrder,OrderCancelModel cancelModel);
	/**
	 * 记录管理员作废订单日志
	 * @param salesOrder
	 * @param cancelModel
	 */
	public void doLogCancelOrderByAdmin(SalesOrder salesOrder,OrderCancelModel cancelModel);
	/**
	 * 记录订单逾期未支付日志
	 * @param salesOrder
	 * @param cancelModel
	 */
	public void doLogCancelOrder4NotPaid(SalesOrder salesOrder,OrderCancelModel cancelModel);
	/**
	 * 记录完成订单日志
	 * @param salesOrder
	 * @param completeModel
	 */
	public void doLogCompleteOrder(SalesOrder salesOrder,OrderCompleteModel completeModel);
	
}
